package com.lgc.algorithm.insertion;

/**
 * 插入排序
 * 时间复杂度为O(n*n)，第二个数同第一个数比，如果比第一个小，就交换位置，
 * 然后第三个数同第二个数比，如果小就交换位置，并且继续同第一个数比较大小，
 * 如果小就交换位置，以此类推。
 */
public class InsertionSort {
    public int[] insertionSort(int[] A, int n) {
        int temp;
        for (int i = 1; i < n; i++) {
            for (int j = i; j > 0; j--) {
                if (A[j] < A[j - 1]) {
                    temp = A[j];
                    A[j] = A[j - 1];
                    A[j - 1] = temp;
                }
            }
        }
        return A;
    }

    public static void main(String[] args) {
        InsertionSort insSort = new InsertionSort();
        int[] A = {4,1,6,8,1, 2, 3, 5, 2, 3};
        int[] ASort = insSort.insertionSort(A, A.length);
        for (int i = 0; i < ASort.length; i++) {
            System.out.println(ASort[i]);
        }
    }
}
